package com.ydgg.ltar.util;

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStream;
import java.io.InputStreamReader;
import java.io.UnsupportedEncodingException;
import java.math.BigDecimal;
import java.net.MalformedURLException;
import java.net.URL;
import java.net.URLConnection;
import java.text.DateFormat;
import java.text.ParseException;
import java.text.SimpleDateFormat;
import java.util.Calendar;
import java.util.Date;
import java.util.Random;
import java.util.UUID;
import java.util.regex.Matcher;
import java.util.regex.Pattern;

/**
 * @author Administrator
 *
 */
public class StringUtils extends org.apache.commons.lang3.StringUtils {

	/**
	 * 使用参数替换字符串中以{}包含的参数
	 * 
	 * @param str
	 * @param value1
	 * @return
	 */
	public static String format(String str, Object value1) {
		return str.replace("{1}", value1.toString());
	}

	/**
	 * 使用参数替换字符串中以{}包含的参数
	 * 
	 * @param str
	 * @param value1
	 * @param value2
	 * @return
	 */
	public static String format(String str, Object value1, Object value2) {
		Object[] obj = new Object[] { value1, value2 };
		return StringUtils.format(str, obj);
	}

	/**
	 * 使用参数替换字符串中以{}包含的参数
	 * 
	 * @param str
	 * @param value1
	 * @param value2
	 * @param value3
	 * @return
	 */
	public static String format(String str, Object value1, Object value2, Object value3) {
		Object[] obj = new Object[] { value1, value2, value3 };
		return StringUtils.format(str, obj);
	}

	/**
	 * 使用参数替换字符串中以{}包含的参数
	 * 
	 * @param str
	 * @param value1
	 * @param value2
	 * @param value3
	 * @param value4
	 * @return
	 */
	public static String format(String str, Object value1, Object value2, Object value3, Object value4) {
		Object[] obj = new Object[] { value1, value2, value3, value4 };
		return StringUtils.format(str, obj);
	}

	/**
	 * 使用参数替换字符串中以{}包含的参数
	 * 
	 * @param str
	 * @param value1
	 * @param value2
	 * @param value3
	 * @param value4
	 * @param value5
	 * @return
	 */
	public static String format(String str, Object value1, Object value2, Object value3, Object value4, Object value5) {
		Object[] obj = new Object[] { value1, value2, value3, value4, value5 };
		return StringUtils.format(str, obj);
	}

	/**
	 * 使用参数替换字符串中以{}包含的参数
	 * 
	 * @param str
	 * @param value1
	 * @param value2
	 * @param value3
	 * @param value4
	 * @param value5
	 * @param value6
	 * @return
	 */
	public static String format(String str, Object value1, Object value2, Object value3, Object value4, Object value5,
			Object value6) {
		Object[] obj = new Object[] { value1, value2, value3, value4, value5, value6 };
		return StringUtils.format(str, obj);
	}

	/**
	 * 使用参数替换字符串中以{}包含的参数
	 * 
	 * @param str
	 * @param values
	 * @return
	 */
	public static String format(String str, Object[] values) {
		for (int i = 0; i < values.length; i++) {
			str = str.replace("{" + i + "}", values[i].toString());
		}
		return str;
	}

	/**
	 * 判断字符串是否数字 有问题
	 * 
	 * @param str
	 * @return
	 */
	public static boolean isNumber(String str) {
		try {
			if (null == str)
				return false;
			new Double(str);
			return true;
		} catch (NumberFormatException e) {
			return false;
		}
	}

	public final static String cutStr(String str, int n) {
		return StringUtils.eCutStr(str, n * 2);
	}

	/**
	 * 扩展后的按字节取字符�?
	 * 
	 * @param str�?��字符�?
	 * @param n�?��节数
	 * @return�?��取后的字�?
	 */
	public static String eCutStr(String str, int n) {
		String temp = "";
		if (n == 0)
			return str;
		if (n < 3) {
			n = 3;
		}
		try {
			char[] chr = str.toCharArray();
			for (int i = 0; i < chr.length; i++) {
				temp += chr[i];
				if (temp.getBytes("GBK").length >= n)
					break;
			}
			if (temp.length() < str.length())
				temp = temp + "...";
		} catch (Exception e) {

		}
		return temp;
	}

	/*
	 * public static String eCutStr(String str,int n){ String temp="";
	 * if(n==0||str.getBytes().length<=n) return str; int i=n/2;
	 * temp=str.substring(0,i); int bytes=temp.getBytes().length; int b;
	 * while(bytes<n){
	 * b=(temp+str.substring(i,i+((n-bytes)==1?2:(n-bytes))/2)).getBytes().
	 * length; if(b<=n){ temp+=str.substring(i,i+((n-bytes)==1?2:(n-bytes))/2);
	 * } i=i+((n-bytes)==1?2:(n-bytes))/2; bytes=b; } if(i<str.length())
	 * temp+="..."; return temp; }
	 */
	public static String trans(String chi) {
		String result = "";
		byte temp[];
		try {
			temp = chi.getBytes("iso-8859-1");
			result = new String(temp);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

	public static String transUTF8(String chi) {
		String result = "";
		byte temp[];
		try {
			temp = chi.getBytes("iso-8859-1");
			result = new String(temp, "UTF-8");
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}

	/**
	 * 自动转换get提交的参数编码，只支持utf-8 和iso-8859-1
	 * 
	 * @param str
	 * @return
	 */
	public static String transURI(String str) {
		if (str == null || "".equals(str)) {
			return str;
		}
		if (StringUtils.isIso(str)) {
			return StringUtils.transUTF8(str);
		} else {
			return str;
		}
	}

	public static boolean isIso(String str) {
		try {
			// byte[] b=str.getBytes();
			// if(isValidUtf8(b,b.length)) return "UTF-8";
			byte[] temp1 = str.getBytes("iso-8859-1");
			String compstring1 = new String(temp1, "iso-8859-1");
			if (str.equals(compstring1)) {
				return true;
			} else {
				return false;
			}
		} catch (Exception e) {
			e.printStackTrace();
			return false;
		}
	}

	public static boolean isValidUtf8(byte[] b, int aMaxCount) {
		int lLen = b.length, lCharCount = 0;
		for (int i = 0; i < lLen && lCharCount < aMaxCount; ++lCharCount) {
			byte lByte = b[i++];
			if (lByte >= 0)
				continue;
			if (lByte < (byte) 0xc0 || lByte > (byte) 0xfd)
				return false;
			int lCount = lByte > (byte) 0xfc ? 5
					: lByte > (byte) 0xf8 ? 4 : lByte > (byte) 0xf0 ? 3 : lByte > (byte) 0xe0 ? 2 : 1;
			if (i + lCount > lLen)
				return false;
			for (int j = 0; j < lCount; ++j, ++i)
				if (b[i] >= (byte) 0xc0)
					return false;
		}
		return true;
	}

	public static String clobToString(java.sql.Clob clob) {
		String str = "";
		try {
			if (clob != null) {
				java.io.Reader is = clob.getCharacterStream();
				java.io.BufferedReader br = new java.io.BufferedReader(is);
				String s;
				s = br.readLine();
				if (s != null) {
					str += s;
				}
				while ((s = br.readLine()) != null) {
					str += "\r\n" + s;
				}
			} else {
				str = null;
			}
		} catch (Exception e) {
			str = null;
		}
		return str;
	}

	public static String blobToString(java.sql.Blob blob) {
		String str = "";
		try {
			if (blob != null) {
				InputStream is = blob.getBinaryStream();
				byte[] bytes = new byte[(int) blob.length()];
				is.read(bytes);
				str = new String(bytes, "UTF-8");
			} else {
				str = null;
			}
		} catch (Exception e) {
			str = null;
		}
		return str;
	}

	public static String filterHTML(String str) {
		if (str == null) {
			return str;
		}
		str = str.replaceAll("&((quot;)|(amp;)|(lt;)|(gt;)|(euro;|)(nbsp;))", "&amp;$1");
		return str.replace("<", "&lt;").replace(">", "&gt;");
	}

	public static Date String2Date(String str, String format) {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		Date d;
		try {
			d = sdf.parse(str);
			return d;
		} catch (ParseException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
			return null;
		}
	}

	/**
	 * 将url参数进行编码
	 * 
	 * @param inStr
	 * @return
	 */
	public static String encodeParameter(String inStr) {
		String reg = "([^=]+=)([^&]*)";
		Pattern p = Pattern.compile(reg, Pattern.DOTALL + Pattern.CASE_INSENSITIVE);
		Matcher m = p.matcher(inStr);
		StringBuffer tempStr = new StringBuffer();
		try {
			while (m.find()) {
				m.appendReplacement(tempStr, m.group(1) + java.net.URLEncoder.encode(m.group(2), "utf-8"));
			}
		} catch (UnsupportedEncodingException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		m.appendTail(tempStr);
		return tempStr.toString();
	}

	public static String getRandomString(Integer length) {
		char[] numbersAndLetters = ("0123456789abcdefghijklmnopqrstuvwxyz" + "0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZ")
				.toCharArray();
		Random randGen = new Random();
		char[] randBuffer = new char[length];
		for (int i = 0; i < randBuffer.length; i++) {
			randBuffer[i] = numbersAndLetters[randGen.nextInt(71)];
			// randBuffer[i] = numbersAndLetters[randGen.nextInt(35)];
		}
		return new String(randBuffer);
	}

	/**
	 * 把物理地址转换成经纬度
	 * 
	 * @param inStr
	 * @return
	 */
	public static String[] getCoordinate(String addr) {
		String address = null;
		try {
			address = java.net.URLEncoder.encode(addr, "UTF-8");
		} catch (UnsupportedEncodingException e1) {
			e1.printStackTrace();
		}
		;
		String output = "csv";
		String key = "abc";
		String url = String.format("http://maps.google.com/maps/geo?q=%s&output=%s&key=%s", address, output, key);
		URL myURL = null;
		URLConnection httpsConn = null;
		// 进行转码
		try {
			myURL = new URL(url);
		} catch (MalformedURLException e) {

		}
		try {
			httpsConn = (URLConnection) myURL.openConnection();
			if (httpsConn != null) {
				InputStreamReader insr = new InputStreamReader(httpsConn.getInputStream(), "UTF-8");
				BufferedReader br = new BufferedReader(insr);
				String data = null;
				if ((data = br.readLine()) != null) {
					String[] retList = data.split(",");

					return retList;
				}
				insr.close();
			}
		} catch (IOException e) {

		}
		return null;
	}

	/**
	 * 字符串转int类型
	 * 
	 * @param str
	 *            要转化的字符串
	 * @param defaultValue
	 *            默认值
	 * @author 李星帅
	 * @time 2016年3月15日15:32:02
	 */
	public static int stringToInt(String str, int defalutValue) {
		try {
			Integer i = Integer.parseInt(str);
			return (i != null) ? i.intValue() : 0;
		} catch (Exception e) {
			return defalutValue;
		}
	}

	/**
	 * 字符串转float类型
	 * 
	 * @param str
	 *            要转化的字符串
	 * @param defaultValue
	 *            默认值
	 * @author 李星帅
	 * @time 2016年3月15日15:32:02
	 */
	public static float stringToFloat(String str, float defalutValue) {
		try {
			Float i = Float.parseFloat(str);
			return (i != null) ? i.floatValue() : 0;
		} catch (Exception e) {
			return defalutValue;
		}
	}

	/**
	 * 字符串转int类型 默认值0
	 * 
	 * @param str
	 *            要转化的字符串
	 * @author 李星帅
	 * @time 2016年3月15日16:06:49
	 */
	public static int stringToInt(String str) {
		try {
			Integer i = Integer.parseInt(str);
			return (i != null) ? i.intValue() : 0;
		} catch (Exception e) {
			return 0;
		}
	}

	/**
	 * Object转int类型
	 * 
	 * @param obj
	 *            要转化的对象
	 * @param defaultValue
	 *            默认值
	 * @author 李星帅
	 * @time 2016年3月15日16:10:17
	 */
	public static int objectToInt(Object obj, int defalutValue) {
		try {
			Integer i = Integer.parseInt(String.valueOf(obj));
			return (i != null) ? i.intValue() : 0;
		} catch (Exception e) {
			return defalutValue;
		}
	}

	/**
	 * Object转boolean类型
	 * 
	 * @param obj
	 *            要转化的对象
	 * @param defaultValue
	 *            默认值
	 * @author 李星帅
	 * @time 2016年3月15日16:10:17
	 */
	public static Boolean objectToBool(Object obj, Boolean defalutValue) {
		try {
			Boolean i = Boolean.valueOf(String.valueOf(obj));
			return i.booleanValue();
		} catch (Exception e) {
			return defalutValue;
		}
	}

	/**
	 * Object转int类型
	 * 
	 * @param obj
	 *            要转化的对象
	 * @return
	 * @author 李星帅
	 * @time 2016年3月15日 下午4:52:03
	 */
	public static int objectToInt(Object obj) {
		try {
			Integer i = Integer.parseInt(String.valueOf(obj));
			return (i != null) ? i.intValue() : 0;
		} catch (Exception e) {
			return 0;
		}
	}

	/**
	 * Object转double类型
	 * 
	 * @param obj
	 *            要转化的对象
	 * @return
	 * @author 李星帅
	 * @time 2016年3月15日 下午4:52:03
	 */
	public static double objectToDouble(Object obj) {
		try {
			Double i = Double.parseDouble(String.valueOf(obj));
			return (i != null) ? i.doubleValue() : 0;
		} catch (Exception e) {
			return 0;
		}
	}

	/**
	 * 使Integer有效，并返回intValue（判断Null）
	 * 
	 * @param i
	 *            要测试的对象
	 * @return
	 * @author 李星帅
	 * @time 2016年3月15日 下午4:25:09
	 */
	public static int validInteger(Integer i) {
		try {
			return (i != null) ? i.intValue() : 0;
		} catch (Exception ex) {
			return 0;
		}
	}

	/**
	 * 使Integer有效，并返回intValue（判断Null）
	 * 
	 * @param i
	 *            要测试的对象
	 * @return
	 * @author 李星帅
	 * @time 2016年3月15日 下午4:25:09
	 */
	public static int validInteger(Integer i, int defaultValue) {
		try {
			return (i != null) ? i.intValue() : 0;
		} catch (Exception ex) {
			return defaultValue;
		}
	}

	/**
	 * 使String有效，并返回非Null值
	 * 
	 * @param str
	 * @return
	 * @author 李星帅
	 * @time 2016年3月15日 下午5:01:41
	 */
	public static String validString(String str) {
		try {
			if (null == str) {
				return "";
			}
			return str;
		} catch (Exception ex) {
			return "";
		}
	}

	/**
	 * 使Long有效，并返回非Null值
	 * 
	 * @param str
	 * @return
	 * @author 李星帅
	 * @time 2016年3月15日 下午5:01:41
	 */
	public static Long validLong(Long l) {
		try {
			if (null == l) {
				return new Long(0);
			}
			return l.longValue();
		} catch (Exception ex) {
			return new Long(0);
		}
	}

	/**
	 * Object转decimal类型
	 * 
	 * @param o
	 * @return
	 * @author 李星帅
	 * @time 2016年5月25日 下午6:46:58
	 */
	public static BigDecimal objectToDecimal(Object o) {
		try {
			if (o == null) {
				return new BigDecimal(0);
			}
			return new BigDecimal(o.toString());
		} catch (Exception ex) {
			return new BigDecimal(0);
		}
	}

	/**
	 * 使String有效，并返回非Null值
	 * 
	 * @param str
	 * @return
	 * @author 李星帅
	 * @time 2016年3月15日 下午5:01:41
	 */
	public static String validString(String str, String defaultValue) {
		try {
			if (null == str) {
				return "";
			}
			return str;
		} catch (Exception ex) {
			return defaultValue;
		}
	}

	/**
	 * 使BigDecimal有效，并返回非Null值
	 * 
	 * @param str
	 * @return
	 * @author 李星帅
	 * @time 2016年3月15日 下午5:01:41
	 */
	public static BigDecimal validBigDecimal(BigDecimal d) {
		try {
			if (null == d) {
				return new BigDecimal(0);
			}
			return d;
		} catch (Exception ex) {
			return new BigDecimal(0);
		}
	}
	
	/**
	 * 去除字符串中的空格
	 * @param str
	 * @return
	 */
	public static String replaceBlank(String str) {
        try {
        	String dest = "";
            if (str!=null) {
                Pattern p = Pattern.compile("\\s*|\t|\r|\n");
                Matcher m = p.matcher(str);
                dest = m.replaceAll("");
            }
            return dest;
		} catch (Exception e) {
			return "";
		}
		

    }
	
	/**
	 * 生成随机数
	 * @param len
	 * @return
	 */
	public static String generatorNumber(int len) {
		StringBuffer sb = new StringBuffer();
		for (int i = 0; i < len; i++) {
			int t = Math.abs(new Random().nextInt()) % 10;
			sb.append(t);
		}
		return sb.toString();
	}
	
	/**
	 * 功能：获取当前日期 格式:2008-02-02 23:11:10
	 * 
	 * @return
	 */
	public static String getCurrentDateTime() {
		Date date = new Date();
		SimpleDateFormat dataTimeFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
		return dataTimeFormat.format(date);
	}
	
	/**
	 * 功能：传入时间按所需格式返回时间字符串
	 * 
	 * @param date
	 *            java.util.Date格式
	 * @param format
	 *            yyyy-MM-dd HH:mm:ss | yyyy年MM月dd日 HH时mm分ss秒
	 * @return
	 */
	public static String formatDate(Date date, String format) {
		String result = "";
		try {
			if (date == null) {
				date = new Date();// 如果时间为空,则默认为当前时间
			}
			if (StringUtils.isBlank(format)) {// 默认格式化形式
				format = "yyyy-MM-dd";
			}
			DateFormat df = new SimpleDateFormat(format);
			result = df.format(date);
		} catch (Exception e) {
			e.printStackTrace();
		}
		return result;
	}
	
	/**
	 * 功能：传入时间字符串按所需格式返回时间
	 * 
	 * @param dateStr
	 *            时间字符串
	 * @param format
	 *            跟传入dateStr时间的格式必须一样 yyyy-MM-dd HH:mm:ss | yyyy年MM月dd日
	 *            HH时mm分ss秒
	 * @return
	 */
	public static Date format(String dateStr, String format) {
		if (StringUtils.isBlank(dateStr)) {
			return new Date();
		}
		if (StringUtils.isBlank(format)) {
			format = "yyyy-MM-dd";
		}
		Date date = null;
		try {
			DateFormat f = new SimpleDateFormat(format);
			date = f.parse(dateStr);
		} catch (ParseException e) {
			e.printStackTrace();
		}
		return date;
	}
	
	/**
	 * 功能：指定日期加上指定天数
	 * 
	 * @param date
	 *            日期
	 * @param minute
	 *            分钟
	 * @return 返回相加后的日期
	 */
	public static Date addMinute(Date date, int minute) {
		Calendar c = Calendar.getInstance();
		c.setTimeInMillis(getMillis(date) + ((long) minute) * 60 * 1000);
		return c.getTime();
	}
	
	/**
	 * 功能：指定日期加上指定天数
	 * 
	 * @param date
	 *            日期
	 * @param day
	 *            天数
	 * @return 返回相加后的日期
	 */
	public static Date addDate(Date date, int day) {
		Calendar c = Calendar.getInstance();
		c.setTimeInMillis(getMillis(date) + ((long) day) * 24 * 3600 * 1000);
		return c.getTime();
	}
	
	/**
	 * 功能：返回毫秒
	 * 
	 * @param date
	 * @return
	 */
	public static long getMillis(Date date) {
		if (date == null) {
			date = new Date();
		}
		Calendar c = Calendar.getInstance();
		c.setTime(date);
		return c.getTimeInMillis();
	}
	
	/**
	 * 功能:两个日期相隔毫秒数
	 * 
	 * @param startDate
	 *            开始日期
	 * @param endDate
	 *            结束日期
	 * @return 返回相减后的日期
	 */
	public static int diffMs(Date startDate, Date endDate, String flag) {
		long between = 0;
		long endMillis = endDate.getTime();
		long startMillis = startDate.getTime();
		between = endMillis - startMillis;
		long day = between / (24 * 60 * 60 * 1000);
		long hour = (between / (60 * 60 * 1000) - day * 24);
		long min = ((between / (60 * 1000)) - day * 24 * 60 - hour * 60);
		long s = (between / 1000 - day * 24 * 60 * 60 - hour * 60 * 60 - min * 60);
		long ms = (between - day * 24 * 60 * 60 * 1000 - hour * 60 * 60 * 1000 - min * 60 * 1000 - s * 1000);
		if (flag.equals("ms")) {
			return (int) ms;
		} else if (flag.equals("s")) {
			return (int) s;
		} else if (flag.equals("m")) {
			return (int) min;
		} else if (flag.equals("d")) {
			return (int) day;
		} else if (flag.equals("h")) {
			return (int) hour;
		}
		return 0;
	}
	
	/**
	 * 两个时间比较
	 * @param DATE1
	 * @param DATE2
	 * @return
	 */
	public static int compare_date(String DATE1, String DATE2,String flag) {

		DateFormat df = null;
		if (flag.equals("true")) {
			df = new SimpleDateFormat("yyyy-MM-dd");
		} else {
			df = new SimpleDateFormat("yyyy-MM-dd hh:mm");
		}
		try {
			Date dt1 = df.parse(DATE1);
			Date dt2 = df.parse(DATE2);
			if (dt1.getTime() > dt2.getTime()) {
				return 1;
			} else if (dt1.getTime() < dt2.getTime()) {
				return -1;
			} else {
				return 0;
			}
		} catch (Exception exception) {
			exception.printStackTrace();
		}
		return 0;
	}
	
	/**
	 * 日期中添加或减去指定的时间间隔
	 * 
	 * @param date
	 *            指定时间
	 * @param days
	 *            间隔时间
	 * @param flag
	 *            标志
	 * @param format
	 *            "yyyy-MM-dd HH:mm:ss"
	 * @return
	 * @throws ParseException
	 */
	public static String getDateAdd(int days, String date, String flag, String format) throws ParseException {
		SimpleDateFormat sdf = new SimpleDateFormat(format);
		Date dateFormat = sdf.parse(date);
		Calendar cld = Calendar.getInstance();
		cld.setTime(dateFormat);
		// 年数改变
		if (flag.equals("year")) {
			cld.add(Calendar.YEAR, days);
		}
		// 月数改变
		if (flag.equals("month")) {
			cld.add(Calendar.MONTH, days);
		}
		// 天数改变
		else if (flag.equals("date")) {
			cld.add(Calendar.DATE, days);
		}
		// 小时改变
		else if (flag.equals("hour")) {
			cld.add(Calendar.HOUR, days);
		}
		// 分钟改变
		else if (flag.equals("minute")) {
			cld.add(Calendar.MINUTE, days);
		}

		Date s1 = cld.getTime();
		DateFormat df = new SimpleDateFormat(format);
		String result = df.format(s1);
		return result;
	}
	

	/**
	 * 金额缩小100倍
	 * 
	 * @param currency
	 *            String
	 * @return String
	 */
	public static BigDecimal changeCurrency(String currency) {
		BigDecimal currencyTemp = BigDecimal.ZERO;
		if(currency==null||currency.equals(""))
		{
			currencyTemp = BigDecimal.ZERO;
			return currencyTemp;
		}
		try {
			currencyTemp = BigDecimal.valueOf(Arith.div(new BigDecimal(currency).doubleValue(), 100, 4));
			return currencyTemp;
		} catch (Exception ex) {
			return currencyTemp;
		}
	}
	
	/**
	 * 将二进制转换成16进制
	 * @param buf
	 * @return
	 */ 
	public static String parseByte2HexStr(byte buf[]) { 
		StringBuffer sb = new StringBuffer(); 
		for (int i = 0; i < buf.length; i++) { 
			String hex = Integer.toHexString(buf[i] & 0xFF); 
			if (hex.length() == 1) { 
				hex = '0' + hex; 
			} 
			sb.append(hex.toUpperCase()); 
		} 
		return sb.toString(); 
	}
	
	/**
	 * 将16进制转换为二进制
	 * @param hexStr
	 * @return
	 */ 
	public static byte[] parseHexStr2Byte(String hexStr) { 
		if (hexStr.length() < 1) 
			return null; 
		byte[] result = new byte[hexStr.length()/2]; 
		for (int i = 0;i< hexStr.length()/2; i++) { 
			int high = Integer.parseInt(hexStr.substring(i*2, i*2+1), 16); 
			int low = Integer.parseInt(hexStr.substring(i*2+1, i*2+2), 16); 
			result[i] = (byte) (high * 16 + low); 
		} 
		return result; 
	} 

	/**
	 * 获取UUID
	 * @return
	 */
	public static synchronized String getUUID() {
		return UUID.randomUUID().toString().toUpperCase();
	}

	
	/**
	 * 时间戳转日期
	 * 作者： 张叶
	 * 创建时间：2018年4月25日  上午9:57:06
	 */
	public static Date formatDate(String str_num) throws ParseException {  
	    SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");
	    String date = "";
	    if (str_num.length() == 13) {  
	        date = sdf.format(new Date(Long.parseLong(str_num)));  
	    } else {  
	        date = sdf.format(new Date(Integer.parseInt(str_num) * 1000L));  
	    }  
        return sdf.parse(date);  
	} 
}
